partition
partition 方法用于是数据库水平分表
partition($data, $field, $rule);// $data 分表字段的数据// $field 分表字段的名称// $rule 分表规则
注意:不要使用任何 SQL 语句中会出现的关键字当表名、字段名,例如 order 等。会导致数据模型拼装 SQL 语句语法错误。
partition 方法用法如下:
// 用于写入$data = ['user_id' => 110,'user_name' => 'think'];$rule = ['type' => 'mod', // 分表方式'num' => 10 // 分表数量];Db::name('log')->partition(['user_id' => 110], "user_id", $rule)->insert($data);// 用于查询Db::name('log')->partition(['user_id' => 110], "user_id", $rule)->where(['user_id' => 110])->select();
如果你的分表后缀是从0开始,而不是1的话,需要自定义分表类型,并自己写一个自定义函数
此时你的规则应该是:
$rule = ['type' => 'myMod', // 自定义分表方式,应该是一个函数'num' => 10 // 分表数量];
同时在common.php中需要定义这个函数
/*** 自定义分表规则** @param int $num* @return string*/function myMod($num){return chr($num % 10 - 1);}
注意,两边的规则参数,在这里是10是需要对应的,而不能只写在rule中